home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_100 / 194_01 / detab.c < prev    next >
Text File  |  1985-11-13  |  1KB  |  63 lines

  1. /* [DETAB.C of JUGPDS Vol.17]
  2. *****************************************************************
  3. *                                *
  4. *    Written by  Hakuo Katayose (JUG-CP/M No.179)        *
  5. *            49-114 Kawauchi-Sanjuunin-machi        *
  6. *                Sendai, Miyagi 980                          *
  7. *            Phone: 0222-61-3219                *
  8. *                                *
  9. *    Edited & tested by Y. Monma (JUG-C/M Disk Editor)       * 
  10. *                                *
  11. *****************************************************************
  12. */
  13.  
  14. /* detab - convert tabs to euivalent number of blanks */
  15.  
  16. #include "stdio.h"
  17. #include <dio.h>
  18.  
  19. main(argc, argv)
  20. int    argc;
  21. char     **argv;
  22.  
  23. {
  24.     char    tabs[MAXLINE];
  25.     int    c, col, getchar();
  26.  
  27.     dioinit(&argc, argv);    /* initialize redirection */
  28.     settab(tabs, MAXLINE);
  29.     col = 1;
  30.     while ( (c = getchar() ) != EOF )
  31.         if ( c == '\t' )
  32.             do {
  33.                 putchar(' ');
  34.                 col++;
  35.         }
  36.             while( tabpos(col, tabs) == NO );
  37.         else {
  38.              putchar(c);
  39.             col = ( ( c == '\n' ) ? 1 : col + 1 );
  40.             }
  41.     dioflush();
  42. }
  43.  
  44.  
  45. tabpos( col, tabs )
  46. int    col;
  47. char    tabs[];
  48. {
  49.     return( (col > MAXLINE) ? YES : tabs[col] );
  50. }
  51.  
  52.  
  53. settab(tabs, maxlen)
  54. int    maxlen;
  55. char    tabs[];
  56. {
  57.     int    i;
  58.  
  59.     for(i = 0; i <= maxlen; i++)
  60.         tabs[i] = ( ( i % 8 == 1 ) ? YES : NO );
  61.     return;
  62. }
  63.